using Meebey.SmartIrc4net;

namespace Thunder.Irc.Formatter
{
    /// <summary>
    /// Base interface for message formatting
    /// </summary>
    public interface IMessageFormatter
    {
        /// <summary>
        /// Gets the resource path to the image
        /// </summary>
        string ImagePath { get; }

        /// <summary>
        /// Gets the type of message handled by the parser
        /// </summary>
        ReceiveType MessageType { get; }

        /// <summary>
        /// This method is invoked when a message should be parsed
        /// </summary>
        /// <param name="args">The <see cref="CancelMessageFormattingEventArgs"/> containing the message to be passed</param>
        /// <remarks>You can cancel further processing of the message by setting the <see cref="CancelMessageFormattingEventArgs.Cancel"/> to true</remarks>
        void Format(CancelMessageFormattingEventArgs args);

        /// <summary>
        /// Initializes the message parser
        /// </summary>
        /// <param name="manager">The <see cref="FormatManager"/> instance</param>
        void Initialize(FormatManager manager);
    }
}